<%
const BASE_64_MAP_INIT = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
dim newline
dim Base64EncMap(63)
dim Base64DecMap(127)
PUBLIC SUB initCodecs()
     newline = "<P>" & chr(13) & chr(10)
     dim max, idx
        max = len(BASE_64_MAP_INIT)
     for idx = 0 to max - 1
          Base64EncMap(idx) = mid(BASE_64_MAP_INIT, idx + 1, 1)
     next
     for idx = 0 to max - 1
          Base64DecMap(ASC(Base64EncMap(idx))) = idx
     next
END SUB
PUBLIC FUNCTION eagleEncode(plain)
     if len(plain) = 0 then
          eagleEncode = ""
          exit function
     end if
     dim ret, ndx, by3, first, second, third
     by3 = (len(plain) \ 3) * 3
     ndx = 1
     do while ndx <= by3
          first  = asc(mid(plain, ndx+0, 1))
          second = asc(mid(plain, ndx+1, 1))
          third  = asc(mid(plain, ndx+2, 1))
          ret = ret & Base64EncMap(  (first \ 4) AND 63 )
          ret = ret & Base64EncMap( ((first * 16) AND 48) + ((second \ 16) AND 15 ) )
          ret = ret & Base64EncMap( ((second * 4) AND 60) + ((third \ 64) AND 3 ) )
          ret = ret & Base64EncMap( third AND 63)
          ndx = ndx + 3
     loop
     if by3 < len(plain) then
          first  = asc(mid(plain, ndx+0, 1))
          ret = ret & Base64EncMap(  (first \ 4) AND 63 )
          if (len(plain) MOD 3 ) = 2 then
               second = asc(mid(plain, ndx+1, 1))
               ret = ret & Base64EncMap( ((first * 16) AND 48) + ((second \ 16) AND 15 ) )
               ret = ret & Base64EncMap( ((second * 4) AND 60) )
          else
               ret = ret & Base64EncMap( (first * 16) AND 48)
               ret = ret
          end if
          ret = ret
     end if
     eagleEncode = ret
END FUNCTION
call initCodecs
%>